草庐IT

mongodb - Mongodb $group 动态表达式

全部标签

ruby-on-rails - 使用 utf8 字符的 ruby​​ 正则表达式在 rails 中的奇怪行为

使用非标准utf-8字符时,我的验证正则表达式之一出现问题。因此,我进行了一些实验,发现ruby​​正则表达式在rails环境或普通ruby​​中表现不同。我用中文字符串在这里发布我的实验。在ruby中“纯”:string="運動會"putsstring[/\A[\w]*\z/]=>match"運動會"-ok在rails上:#coding:utf-8task:test=>:environmentdostring="運動會"putsstring[/\A[\w]*\z/]end$raketest=>nothing-notok如果我省略#coding:utf-8,它将带有invalidmul

ruby-on-rails - 动态扩展 Virtus 实例属性

假设我们有一个Virtus模型UserclassUserincludeVirtus.modelattribute:name,String,default:'John',lazy:trueend然后我们创建该模型的一个实例并从Virtus.model扩展以动态添加另一个属性:user=User.newuser.extend(Virtus.model)user.attribute(:active,Virtus::Attribute::Boolean,default:true,lazy:true)当前输出:user.active?#=>trueuser.name#=>'John'但是当我尝试

ruby - 正则表达式检查 ruby​​ 中的字母数字字符串

我正在尝试验证ruby​​中的字符串。任何包含空格、下划线或任何特殊字符的字符串都应该无法通过验证。有效字符串应仅包含字符a-zA-Z0-9我的代码看起来像。defvalidate(string)regex="/[^a-zA-Z0-9]$/if(string=~regex)return"true"elsereturn"false"end我收到错误:类型错误:类型不匹配:给定的字符串。谁能告诉我这样做的正确方法是什么? 最佳答案 如果您正在验证一行:defvalidate(string)!string.match(/\A[a-zA-Z

ruby - Ruby 正则表达式中的\w 匹配汉字

我使用下面的代码:puts"matched"if"中国"=~/\w+/它把“matched”给了我一个惊喜,因为“中国”是两个汉字,它没有0-9,a-z,A-Z和_中的任何一个,但是为什么它输出“matched”".有人能给我一些线索吗? 最佳答案 我不确定Ruby使用的正则表达式的确切风格,但这不仅仅是Ruby的异常,因为.net也以这种方式工作。MSDNsaysthis关于它:\wMatchesanywordcharacter.Fornon-UnicodeandECMAScriptimplementations,thisisth

ruby-on-rails - 在一个 Rails 应用程序中使用 PostgreSQL 的 MongoDB

我可以在一个Rails应用程序中同时使用MongoDB和PostgreSQL吗?具体来说,我最终会想要使用像MongoHQ这样的东西。到目前为止,我未能在实验中进行这项工作。令我担心的是,MongoDB文档特别指出我必须禁用ActiveRecord。任何建议将不胜感激。 最佳答案 您无需禁用ActiveRecord即可使用MongoDB。查看Mongoid只需将gem加上任何模型与您现有的任何ActiveRecord模型一起添加。您应该注意到MongoHQ只是MongoDB的托管服务,可以与任何对象文档映射器(ODM)一起使用。更多

ruby - 后视正则表达式 (Ruby) 的问题

我写了这个正则表达式来匹配所有href和srcHTML页面中的链接;(我知道我应该使用解析器;这只是试验):/((href|src)\=\").*?\"/#Withoutlook-behind它工作正常,但是当我尝试将表达式的第一部分修改为后视模式时:/(?#Withlook-behind它抛出一个错误,指出“无效的后视模式”。有什么想法吗,回溯有什么问题吗? 最佳答案 Lookbehind有restrictions:(?您不能将备选方案放在(负面)回顾中的非顶层。将它们放在顶层。您也不需要转义您所做的一些字符。/(?

ruby-on-rails - rails - 使用 Group_by 时 - 如何获取索引?

我有以下内容:sets=DataSet.all.group_by{|data|[data.project_id,"-",data.thread_id].join("")}:LastPost问题是我需要一个索引。所以我更新了上面的内容::LastPost然后中断,出现错误:undefinedmethod`last'for0:Fixnum想法?谢谢 最佳答案 您观察到的问题是因为参数分配给block的方式。在您的第二个示例中,您将观察到range包含一个包含单个range和匹配的datas的数组,datas变量包含索引,i始终为nil。

Ruby:正则表达式中的十六进制

我需要在Ruby(实际上是Rails)程序的正则表达式中匹配md5校验和。我在某处发现我可以将十六进制字符串与\h序列匹配,但我找不到链接了。我正在使用该序列并且我的代码在Ruby1.9.2中运行。我什至可以让它在普通IRB下工作(因此它不是Rails扩展)。ruby-1.9.2-p180:007>"123abcdf"=~/^\h+$/;$~=>#ruby-1.9.2-p180:008>"123abcdfg"=~/^\h+$/;$~=>nil但是我的IDE将该表达式标记为错误,我找不到任何引用该序列的引用。在任何环境/版本下,RubyRegex中的\h序列是否合法,或者我应该相信我的想

ruby - 在 Ruby 中动态定义类方法

在Ruby1.9.3中,我需要创建几个类实例,每个类实例都具有相似的实例方法和类方法,但仅在几个固定参数方面有所不同。它们的类类型的区别也很重要,所以我不能简单地使用同一类的不同实例。一个简化的示例如下所示。moduleAnimalprivatedefself.make_animal(name,legs,noise)klass=Class.newklass.const_set(:NUM_LEGS,legs)klass.class.send(:define_method,:scream){noise.upcase+'!'}Animal.const_set(name,klass)endma

ruby - 使用 mongodb/mongoid 运行时更改模型

我必须在mongoid模型中添加几个字段,我知道MongoDB没有迁移,但如果我继续而不删除数据库,使rails完全“重新生成”数据库,它不会显示或使用新的领域!去这里最好的方法是什么?有比删除/重新打开mongodb更软的东西吗?提前致谢卢卡 最佳答案 一般来说,应该可以在运行时用新字段更新旧文档。MongoDB中不需要迁移。您可能想编写rake任务以使用新字段和默认值更新旧文档。您可以通过检查那些默认值为nil的新字段来找到这些文档。更新简单风格:如果您使用默认值定义一个新字段,只要您设置了一个新值,就应该始终使用该值:应用程序